package org.jeecg.modules.zhouAdmin.admin.fabeicCenter.serveic;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.modules.zhouAdmin.admin.fabeicCenter.pojo.*;
import org.jeecg.modules.zhouAdmin.admin.orderCenterModule.pojo.MlccCompanyInfo;
import org.jeecg.modules.zhoupackage.pojo.MlccFabricInfo;

import java.util.List;

/**
 * 面料中心Service
 *
 * @author zxl
 * @since 20201027
 */
public interface IFabricCenterService {

    /**
     * 获取面料系列列表（面料组列表）
     *
     * @param page 分页器
     * @return
     */
    IPage<FabricGroup> getGroupList(Page<FabricGroup> page, String name, String price, String status, String code);

    /**
     * 新增面料组
     *
     * @param name   面料组名称
     * @param price  价格
     * @param remake 备注
     * @return
     */
    int addGroup(LoginUser user, String name, Double price, String remake);

    /**
     * 更新面料组信息
     *
     * @param name
     * @param price
     * @param remake
     * @return
     */
    int updateGroup(Integer groupID, String name, Double price, String remake);

    /**
     * 面料组下架
     *
     * @param groupID 面料组ID
     */
    int shelves(String groupID);

    /**
     * 面料组上架
     *
     * @param groupID 面料组ID
     */
    int groupUp(String groupID);

    /**
     * 面料组恢复
     *
     * @param groupID 面料组ID
     */
    int huifu(String groupID);

    /**
     * 删除面料组
     *
     * @param groupID
     * @return
     */
    int deleteGroup(String groupID);

    /**
     * 根据面料组ID获取名下面料数据列表
     *
     * @param groupID
     * @param page
     * @param fabricCode
     * @param gysCode
     * @param status
     * @return
     */
    IPage<FabricEntity> getFabricList(Page<FabricEntity> page, String groupID, String fabricCode, String gysCode, String status);

    /**
     * 删除面料
     *
     * @param fabricID
     * @return
     */
    int delFabric(String fabricID);

    /**
     * 面料下架
     *
     * @param fabricID
     */
    int serFabric(String fabricID);

    /**
     * 下架的面料重新上架
     *
     * @param fabricID 面料ID
     */
    int fabricUp(String fabricID);

    /**
     * 获取主推面料列表
     *
     * @param page
     * @param fabricCode
     * @param gysCode
     * @param status
     * @return
     */
    IPage<FabricEntity> getFirstFabricList(Page<FabricEntity> page, String fabricCode, String gysCode, String status);

    /**
     * 总后台获取面料详情
     *
     * @param fabricID
     * @return
     */
    MlccFabricInfo getFabricDetail(String fabricID);

    /**
     * 删除面料的恢复方式（状态变为已下架）
     *
     * @param id 面料id
     */
    int fabricHuifu(String id);

    /**
     * 选择供应商
     *
     * @return
     */
    List<MySysUser> selectGYS();

    /**
     * 新增面料
     *
     * @param entity
     * @return
     */
    int addFabric(MlccFabricInfo entity);

    /**
     * 更新面料信息
     *
     * @param entity
     * @return
     */
    int updateFabric(MlccFabricInfo entity);

    /**
     * 新增主推面料
     *
     * @param fabricCode 面料编号
     * @param price      添加的价格
     * @param remark     备注
     */
    int addFirstFabric(String fabricCode, double price, String remark);

    /**
     * 删除主推面料 本质就是把面料的默认价格变成0
     *
     * @param code 面料编号
     */
    int delFirstFabric(String id);

    /**
     * 删除没有发放的面料册
     *
     * @param id 面料册id
     */
    int delFabricBooklet(String id);

    /**
     * 获取面料册列表
     *
     * @param page  分页器
     * @param name  客户名称
     * @param phone 联系电话
     * @return
     */
    IPage<MlccFabricBooklet> listBooklets(Page<MlccFabricBooklet> page, String name, String phone);

    /**
     * 新增面料册
     *
     * @param booklet 面料册实体
     * @return
     */
    int saveBooklet(MlccFabricBooklet booklet);

    /**
     * 更新面料册
     *
     * @param booklet 面料册对象
     */
    int updateBooklet(MlccFabricBooklet booklet);

    /**
     * 面料册开始发放
     *
     * @param id 面料册id
     */
    int startfa(String id);

    /**
     * 面料册结束发放
     *
     * @param id 面料册id
     */
    int endfa(String id);

    /**
     * 面料批量导入
     *
     * @param list  excel中的数据
     * @param group 面料组ID
     * @return
     */
    int importExcel(List<MlccFabricInfo> list, String group);

    /**
     * 获取面料组的阶梯折扣
     *
     * @param groupid 面料组ID
     */
    List<MlccFabricLadderPrice> listGroupPrice(String groupid);

    /**
     * 添加折扣
     *
     * @param entity 参数对象
     */
    int saveGroupPrice(MlccFabricLadderPrice entity);

    /**
     * 获取面料模板
     */
    List<MlccFabricInfo> exportFabric();

    /**
     * 删除面料组阶梯价
     *
     * @param id 阶梯价主键id
     */
    int deleteGroupPrice(String id);

    /**
     * 面料册导入面料
     *
     * @param file    上传的Excel文件
     * @param booklet 面料册ID
     */
    int importBookFabricExcel(List<MlccFabricInfo> list, String booklet);

    /**
     * 获取面料册下的面料咧白哦
     *
     * @param page      分页器
     * @param bookletid 面料册id
     */
    IPage<MlccFabricInfo> listFabricFromBooklet(Page<MlccFabricInfo> page, String bookletid);

    /**
     * 相处面料册下的面料
     *
     * @param id 关联表id
     */
    int delFabricFrombook(String id);

    /**
     * 面料册详情
     *
     * @param id 面料册id
     */
    MlccFabricBooklet bookletDetail(String id);

    /**
     * 公司列表
     */
    IPage<MlccCompanyInfo> listCompany(Page<MlccCompanyInfo> page, String name);

    /**
     * 发放面料册
     *
     * @param bookletid  面料册id
     * @param remark     备注
     * @param num        发放数量
     * @param companyids 公司id
     */
    int addFa(String bookletid, String remark, Integer num, String[] companyids);

    /**
     * 面料册发放情况
     *
     * @param bookletid 面料册id
     * @param page      分页器
     */
    IPage<MlccBookletFa> listFafang(String bookletid, Page<MlccBookletFa> page);

    /**
     * 删除发放记录
     *
     * @param id 发放id
     */
    int deleteFa(String id);

    /**
     * 面料列表的批量操作
     *
     * @param ids    面料id数组
     * @param status 状态
     */
    int fabricpi(String[] ids, Integer status);

    /**
     * 主推面料的导入
     *
     * @param list 面料集合
     */
    int importFirstFabricExcel(List<MlccFabricInfoFirst> list);
}
